
var conexao = (function() {
    var host = location.hostname;
    var socket = new WebSocket("ws://" + host + ":" + 666);
    var isOpen = false;
    var onOpen = function() {
        console.log("conexão estabelecida");
    };
    var onError = function() {
    };
    var onMessage = function() {
    };
    var onClose = function() {
    };

    socket.onopen = function() {
        isOpen = true;
        onOpen();
    };
    socket.onerror = function(e) {
        try{
            socket.close();
            onError(e);
        }catch (erro){          
        }finally {
            isOpen = false;
        }
    };
    socket.onmessage = function(e) {
        if ((typeof e.data) === "string") {
            var msg = JSON.parse(e.data);
            onMessage(msg);
        }
    };
    socket.onclose = function() {
        onClose();
    };

    return {
        setOnOpen: function(func) {
            if (func && func instanceof Function) {
                onOpen = func;
            }
        },
        setOnError: function(func) {
            if (func && func instanceof Function) {
                onError = func;
            }
        },
        setOnMessage: function(func) {
            if (func && func instanceof Function) {
                onMessage = func;
            }
        },
        setOnClose: function(func) {
            if (func && func instanceof Function) {
                onClose = func;
            }
        },
        send: function(msg){
            if(isOpen && (typeof msg) === "string"){
                socket.send(msg);
            }
        }
    };

})();



